import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import { mars3dPlugin } from 'vite-plugin-mars3d'
// @ts-ignore
// import { viteMockServe } from 'vite-plugin-mock'

// 页面自动导入插件
// @ts-ignore
import ViteAutoImport from 'unplugin-auto-import/vite'
// import Components from 'unplugin-vue-components/vite'
// import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

// 引入node 提供的内置的patch 可以获取绝对路径
import path from 'path'
// https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {
     //获取各种环境下的对应的变量
     let env = loadEnv(mode, process.cwd())
     return {
          //代理跨域
          server: {
               port: 7777,
               proxy: {
                    [env.VITE_APP_BASE_API]: {
                         //获取数据的服务器地址设置
                         target: env.VITE_SERVE,
                         //需要代理跨域
                         changeOrigin: true,
                         //路径重写
                         rewrite: (path) => path.replace(/^\/api/, '/api'),
                         logLevel: 'debug', //每个代理下面都要加,不然不行
                         // 打印代理地址
                         bypass(req, res, options: any) {
                              const proxyURL = options.target + options.rewrite(req.url)
                              console.log('proxyURL : ', proxyURL) //在控制台输出路径
                              res.setHeader('x-req-proxyURL', proxyURL) // 设置响应头显示完整请求路径
                         },
                    },
               },
          },

          plugins: [
               vue(),
               // 配置svg插件
               createSvgIconsPlugin({
                    // Specify the icon folder to be cached 设置相关路径
                    iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
                    // Specify symbolId format
                    symbolId: 'icon-[dir]-[name]',
               }),
               // moke相关配置
               // viteMockServe({
               //      localEnabled: command === 'serve', //保证开发阶段 可以使用mocke
               //      // localEnabled: true,
               // }),
               // Components({
               //      // allow auto load markdown components under `./src/components/`
               //      extensions: ['vue', 'md'],
               //      // allow auto import and register components used in markdown
               //      include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
               //      resolvers: [
               //           ElementPlusResolver({
               //                importStyle: 'sass',
               //           }),
               //      ],
               //      dts: 'src/components.d.ts',
               // }),
               ViteAutoImport({
                    dts: './auto-import.d.ts',
                    imports: ['vue', 'vue-router'],
                    eslintrc: {
                         enabled: true,
                         filepath: './.eslintrc-auto-import.json',
                         globalsPropValue: true,
                    },
               }),
               mars3dPlugin(),
          ],
          build: {
               // minify: false,
          },
          // 打包路径设置
          base: process.env.NODE_ENV === 'production' ? './' : '/',
          // serve 文件夹配置别名
          resolve: {
               alias: {
                    '@': path.resolve(__dirname, 'src'),
               },
          },
          // scss 全局变量的配置
          css: {
               preprocessorOptions: {
                    // scss: {
                    //      javascriptEnabled: true,
                    //      api: 'modern-compiler', // or 'modern'
                    //      additionalData: `@import "@/styles/element/index.scss";`,
                    // },
               },
          },
     }
})
